
Nombre:
GameSpy 3D
Versión:
2.16
Editor:
Spy Software
Víctima:
GAMESPY.EXE
Herramientas:
SoftICE v4.00
W32Dasm
Hacker’s View v6.01
PE-Sniffer v1.06
DeShrink v1.5
Cerebro
Cracker:
LW2000
Tutorial:
número 4
Renuncia: Este tutorial tiene una finalidad únicamente
educativa. No asumo ninguna responsabilidad por el mal uso de éste material.
1.
Cargamos GameSpy. ¡Booom! “GameSpy -
Un-Registered Version GameSpy 3D
is unlimited use shareware.“
2.
¡Hmmmm! Vamos a intentar registrarnos.
¡Nos tenemos que asegurar que estamos offline! Pulsamos ‘Register’ e introducimos
‘LW2000’ como Name, ‘LW2000@GAMESPY.COM’ como Email y ‘[LW2000]’ como Key.
Ahora pulsamos ‘Ok’.
3.
¡Booom! Se abre la conexión telefónica
a redes. Parece que también tenemos algún tipo de protección mediante Internet.
Hacemos click en ‘Cancel’. ¡Booom! “The registration server is not responding.
Try again later.” Salimos de GameSpy.
4.
¡Vamos a crackear ésta ‘criaturita’!
Cargamos SoftICE y arrancamos nuevamente nuestro programa. Pulsamos ‘Register’
y volvemos a introducir nuestros datos. ¡No pulsamos ‘Ok’ todavía! Antes nos
cambiamos a SoftICE con Ctrl-D y ponemos un breakpoint en getWindowTextA (“BPX
GETWINDOWTEXTA”). Pulsamos F5 y volvemos a GameSpy.
5.
Hacemos click en ‘Ok’. SoftICE aparece;
comoquiera que estamos en el primer campo de texto (Name), pulsamos F5 para
regresar a GameSpy. Nuevamente aparece SoftICE, en el segundo campo de texto
(Email), pulsamos F5 para regresar a GameSpy. Aparecerá una vez más SoftICE
y pulsamos F5 para regresar a GameSpy.
6.
Ahora veremos la conexión telefónica
a redes. Pulsamos ‘Cancel’. SoftICE aparecerá nuevamente. Pulsamos F11 para
ir a la instrucción que realizó la llamada. Ahora sea paciente y tracee el
código con F10 hasta que llegue a un ‘CALL’ que tardará mucho tiempo en finalizar.
¡Espera, merece la pena!
7.
Cuando el ‘CALL’ termine, tracee un poco
más hasta llegar al siguiente código:
:00462F76 3BC5 cmp eax, ebp
:00462F78 0F846F010000 je 004630ED >¡Bad Boy!
:00462F7E 85C0 test eax, eax
:00462F80 0F843C010000 je 004630C2 >¡Bad Boy!
:00462F86 8B864C010000 mov eax, dword ptr [esi+0000014C]
>Su
>Serial
>number
:00462F8C 8B4C240C mov ecx, dword ptr
[esp+0C] >Serial
>Number
>correcto
8.
Lo que queremos hacer es eliminar las
dos instrucciones ‘JE’ y ver el Serial Number correcto. Traceamos hasta el
primer ‘JE’. Introducimos ‘a’ para editar el código. Escribimos ‘NOP’ y después
pulsamos Intro. Hacemos esto cinco veces más. Ahora tendremos seis instrucciones
‘NOP’. ‘NOP’ quiere decir ‘NO OPERATION’; en lugar de comprobar el serial,
el ordenador no hará nada. ¿Por qué seis veces? El código hexadecimal de ‘JE
004630ED’ es ‘0F846F010000’, lo cual es 12 dividido por 2, que es 6. Traceamos
hasta la segunda instrucción ‘JE’ y hacemos lo mismo: sí, la ponemos a ‘NOP’.
9.
Traceamos hasta pasar las líneas que
hemos incluído. Escribimos “D EAX”, con lo que se nosmostrará nuestro Reg
Number. Escribimos “D ECX” y se nos mostrará el Serial Number correcto. Nuestro
Serial es “3Cd5-425G-g973-eh32”.
10.
Escribimos “BD *” para desactivar el
breakpoint. Pulsamos F5 para salir de SoftICE. Aparecerá una nueva messgeBox
que nos dirá que nuestro RegCode (‘[LW2000]’) no es el correcto. Podemos ahora
introducir el Serial Number correcto para registrar GameSpy, ¡antes de salir
de GameSpy!
11.
Vamos a hacer que nuestros cambios sean
permanentes. Creo que he visto la palabra ‘shrink’ en el código; esto quiere
decir que el programa está comprimido con Shrinker. ¡Parece que estoy en lo
cierto!
12.
Cargamos PE-Sniffer. Hacemos click en
el botón ‘…’ y seleccionamos GameSpy. Ahora hacemos click en Shrinker v3.3
and Shrinker v3.4 para que Shrinker examine este fichero.
13.
El resultado es que el fichero está empaquetado
con Shrinker v3.4. ¡Vamos a desempaquetarlo! Cargamos DeShrink v1.5 y pinchamos
en la checkBox ‘UnPack Shrinker 3.4’. Cargamos “GAMESPY.EXE” en la entrada.
El resultado lo guardamos como “UNPACKED.EXE”. Después pulsamos en ‘Decompress’.
14.
Salimos del programa. Cargamos “UNPACKED.EXE”
en W32Dasm. Vamos a la posición de código ‘00462F76’. Recuerde que ésta es
la posición que obtuvimos desde SoftICE:
:00462F76 3BC5 cmp eax, ebp
:00462F78 0F846F010000 je 004630ED >¡Bad Boy!
:00462F7E 85C0 test eax, eax
:00462F80 0F843C010000 je 004630C2 >¡Bad Boy!
:00462F86 8B864C010000 mov eax, dword ptr [esi+0000014C]
>Su
>Serial
>number
:00462F8C 8B4C240C mov ecx, dword ptr
[esp+0C] >Serial
>Number
>correcto
¡Hmmm! Creo que ya hemos visto esto antes.
15.
Ponemos la barra en ‘:00462F78 0F846F010000
JE 004630ED’. En la barra de estado veremos el offset ‘62F78h’; lo anotamos.
Ponemos la barra en ‘:00462F80 0F843C010000 JE 004630C2’. En la barra de estado
veremos el offset ‘62F80h’; lo anotamos. La ‘h’ quiere decir ‘hexadecimal’,
podemos olvidarnos de élla; por lo tanto nuestros offsets son ‘62F78’ y ‘62F80’.
16.
Salimos de W32Dasm y cargamos HIEW con
“UNPACKED.EXE”. Pulsamos Intro dos veces para ir al modo DeCode. Pulsamos
F5 y vamos a la posición de código ‘62F78’. Pulsamos F3 para editar y escribimos
seis veces ‘90’ que es el opcode de la instrucción ‘NOP’. Pulsamos F9 para
actualizar. Pulsamos F5 y vamos al offset ‘62F80’ y hacemos lo mismo que hemos
hecho en el offset ‘62F78’. Pulsamos F9 para actualizar y F10 para salir.
17.
Ejecutamos GameSpy e introducimos nuestros
detalles.
¡Enhorabuena! ¡Ya somos un usuario registrado!
¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme
un email a LW2000@gmx.net.
o vaya a http://www.LW2000.cjb.net
Gracias a tKC por sus tutoriales. Empecé leyendo su
primer tutorial y todavía sigo leyéndolos.
Traducción de: MeGaBiTe